package com.um2.compression.grol;

import java.awt.Rectangle;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;


public class EcrireFichierBinaire {
	
	public static void ecrire(int largeurImage,
			int hauteurImage,
			List<Rectangle> rectanglesLuminance,
			List<Integer> valeursLuminance,
			List<Rectangle> rectanglesCrominanceRouge, 
			List<Integer> valeursCrominanceRouge, 
			List<Rectangle> rectanglesCrominanceBleu,
			List<Integer> valeursCrominanceBleu,
			  List<Integer> valeursRestantesLuminance,
			  List<Integer> valeursRestantesCRouge,
			  List<Integer> valeursRestantesCBleu) throws IOException {
		
	    DataOutputStream ecriture;
	    
	    JFileChooser jfc = new JFileChooser("./") ;
	    jfc.setDialogType(JFileChooser.SAVE_DIALOG) ;
		jfc.removeChoosableFileFilter(jfc.getFileFilter());
		jfc.addChoosableFileFilter(new Filtre());
	    jfc.setName("enregistrer une grollure ...") ;
	    jfc.setDialogTitle("creer une grollure ici") ;
	    jfc.setApproveButtonText("creer une grollure ici") ;
	    
	    
	    
	    

	    if (jfc.showOpenDialog(null)!=JFileChooser.APPROVE_OPTION) {
	    	return ;
	    }
	    ecriture = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(jfc.getSelectedFile().getAbsolutePath()))) ;
	    

   
	    //Extension
	    ecriture.writeChars(".grol");
	    //System.out.println("Extension : "+".grol");
	    //System.out.println();
	    
	    //Hauteur img
	    ecriture.writeShort(hauteurImage);
	    System.out.println("Hauteur image : "+hauteurImage);
	    //System.out.println();
	    
	    //Largeur img
	    ecriture.writeShort(largeurImage);
	    System.out.println("Largeur image : "+largeurImage);
	    //System.out.println();
	    
	    //System.out.println("TEST AVEC 6 rect pour Y et 4 pour Cr et Cb");
	    //System.out.println();
	    
	    /** LUMINANCE */
	    
	    //Nombre de rectangle pour la Luminance
	    ecriture.writeShort(rectanglesLuminance.size());
	    System.out.println(rectanglesLuminance.size()+" rectangles en Y");
	    ////System.out.println();
	    ////System.out.println("Nb rect pour Y :"+rectanglesLuminance.size());
	    ////System.out.println();
	    
	    ////System.out.println("Rectangles pour Y : ");
	    ////System.out.println();
	    
	    for ( int i=0 ; i<rectanglesLuminance.size() ; i++ ) {
	    
	    	//Valeur de la luminance
	    	int valeur = valeursLuminance.get(i);
	    	ecriture.writeShort(valeur);
	    	////System.out.println("Val Y ["+i+"] : "+valeursLuminance.get(i));
	    
	    		 
	    		 int x = (int) rectanglesLuminance.get(i).getX();
	    		 int y = (int) rectanglesLuminance.get(i).getY();
	    		 int largeur = (int) rectanglesLuminance.get(i).getWidth();
	    		 int hauteur = (int) rectanglesLuminance.get(i).getHeight();
	    		 
	    		 ////System.out.print("Rect Y ["+i+"] =");
	    		 ecriture.writeShort(x);
	    		 ////System.out.print(" X = "+x+" ");
	    		 ecriture.writeShort(y);
	    		 ////System.out.print(" Y = "+y+" ");
	    		 ecriture.writeShort(largeur);
	    		 ////System.out.print(" larg = "+largeur+" ");
	    		 ecriture.writeShort(hauteur);
	    		 ////System.out.print(" haut = "+hauteur+" ");
	    		 ////System.out.println();
	    		
	    	 }
	    	 ////System.out.println();
	    
	    	 
	    	 
	    	 
	 	    //Nombre de px restant pour Y
 	    /*********************************************************/
 	    /*********************************************************/
	 	    ////System.out.println();
	 	    ecriture.writeShort(valeursRestantesLuminance.size());
	 	    System.out.println(valeursRestantesLuminance.size()+" pixels complementaires pour Y");
	 	    ////System.out.println();
	 	    ////System.out.println("Px restants : ");
	 	    ////System.out.println();
	 	    
	 	    
	 	    
	 	    //Pix restant
	 	    for ( int i=0 ; i<valeursRestantesLuminance.size() ; i++ ) { 
	 		    
	 	    	//Valeur de la luminance
	 	    	int valeur = valeursRestantesLuminance.get(i);
	 	    	ecriture.writeShort(valeur);
	 	    	////System.out.println("Px (Y) ["+i+"] : "+ecriture);
	 	    }
	 	    ////System.out.println();
	 	    ////System.out.println();
	 	    /*********************************************************/
	 	    /*********************************************************/
	    	 
	    	 
	    	 
	    	 
	 	    
	 	    
	 	    
	 	    
	 	    
	    /** CHROMINANCE R */
	    
	    //Nombre de rectangle pour la Chrominance de Rouge
	    ecriture.writeShort(rectanglesCrominanceRouge.size());
	    System.out.println(rectanglesCrominanceRouge.size()+" rectangles en Cr");
	    ////System.out.println("------ CHROMINANCE DE ROUGE (Cr) ------");
	    ////System.out.println();
	    ////System.out.println("Nb rect pour Cr :"+rectanglesCrominanceRouge.size());
	    ////System.out.println();
	    
	    ////System.out.println("Rectangles pour Cr : ");
	    ////System.out.println();
	    
	    for ( int i=0 ; i<rectanglesCrominanceRouge.size() ; i++ ) { 
		    
	    	//Valeur de la luminance
	    	int valeur = valeursCrominanceRouge.get(i);
	    	ecriture.writeShort(valeur);
	    	////System.out.println("Val Cr ["+i+"] : "+valeur);
	    
	    		 
	    		 int x = (int) rectanglesCrominanceRouge.get(i).getX();
	    		 int y = (int) rectanglesCrominanceRouge.get(i).getY();
	    		 int largeur = (int) rectanglesCrominanceRouge.get(i).getWidth();
	    		 int hauteur = (int) rectanglesCrominanceRouge.get(i).getHeight();
	    		 
	    		 ////System.out.print("Rect Cr ["+i+"] =");
	    		 ecriture.writeShort(x);
	    		 ////System.out.print(" X = "+x+" ");
	    		 ecriture.writeShort(y);
	    		 ////System.out.print(" Y = "+y+" ");
	    		 ecriture.writeShort(largeur);
	    		 ////System.out.print(" larg = "+largeur+" ");
	    		 ecriture.writeShort(hauteur);
	    		 ////System.out.print(" haut = "+hauteur+" ");
	    		 ////System.out.println();
	    		
	    	 ////System.out.println();
	    }
	    

	    
	    //Nombre de px restant pour Cr
 	    /*********************************************************/
 	    /*********************************************************/
	    ////System.out.println();
	    ecriture.writeShort(valeursRestantesCRouge.size());
 	    System.out.println(valeursRestantesCRouge.size()+" pixels complementaires pour Cr");
	    ////System.out.println("Nb de px restant pour Cr :"+ecriture);
	    ////System.out.println();
	    ////System.out.println("Px restants : ");
	    ////System.out.println();
	    
	    //Pix restant
	    for ( int i=0 ; i<valeursRestantesCRouge.size() ; i++ ) { 
		    
	    	//Valeur de la luminance
	    	int valeur = valeursRestantesCRouge.get(i);
	    	ecriture.writeShort(valeur);
	    	////System.out.println("Px (Cr) ["+i+"] : "+ecriture);
	    }
	    ////System.out.println();
	    ////System.out.println();
 	    /*********************************************************/
 	    /*********************************************************/
	    
	    
	    
	    
	    
	    
	    
	    
	    
	    
	    
	    
	    
	    /** CHROMINANCE B */
	    
	    //Nombre de rectangle pour la Chrominance de Bleu
	    ecriture.writeShort(rectanglesCrominanceBleu.size());
	    System.out.println(rectanglesCrominanceBleu.size()+" rectangles en Cb");
	    ////System.out.println("------ CHROMINANCE DE BLEU (Cb) ------");
	    ////System.out.println();
	    ////System.out.println("Nb rect pour Cb :"+rectanglesCrominanceBleu.size());
	    ////System.out.println();
	    
	    ////System.out.println("Rectangles pour Cb : ");
	    ////System.out.println();
	    
	    for ( int i=0 ; i<rectanglesCrominanceBleu.size() ; i++ ) { 
		    
	    	//Valeur de la luminance
	    	int valeur = valeursCrominanceBleu.get(i);
	    	ecriture.writeShort(valeur);
	    	////System.out.println("Val Cb ["+i+"] : "+valeur);
	    
	    		 
	    		 int x = (int) rectanglesCrominanceBleu.get(i).getX();
	    		 int y = (int) rectanglesCrominanceBleu.get(i).getY();
	    		 int largeur = (int) rectanglesCrominanceBleu.get(i).getWidth();
	    		 int hauteur = (int) rectanglesCrominanceBleu.get(i).getHeight();
	    		 
	    		 ////System.out.print("Rect Cb ["+i+"] =");
	    		 ecriture.writeShort(x);
	    		 ////System.out.print(" X = "+x+" ");
	    		 ecriture.writeShort(y);
	    		 ////System.out.print(" Y = "+y+" ");
	    		 ecriture.writeShort(largeur);
	    		 ////System.out.print(" larg = "+largeur+" ");
	    		 ecriture.writeShort(hauteur);
	    		 ////System.out.print(" haut = "+hauteur+" ");
	    		 ////System.out.println();

	    	 ////System.out.println();
	    }
	     
	    
	    
	    
	    
 	    /*********************************************************/
 	    /*********************************************************/
	    //Nombre de px restant pour Cb
	    ////System.out.println();
	    ecriture.writeShort(valeursRestantesCBleu.size());
 	    System.out.println(valeursRestantesCBleu.size()+" pixels complementaires pour Cb");
	    ////System.out.println("Nb de px restant pour Cb :"+ecriture);
	    ////System.out.println();
	    ////System.out.println("Px restants : ");
	    ////System.out.println();
	    
	    //Pix restant
	    for ( int i=0 ; i<valeursRestantesCBleu.size() ; i++ ) { 
		    
	    	//Valeur de la luminance
	    	int valeur = valeursRestantesCBleu.get(i);
	    	ecriture.writeShort(valeur);
	    	////System.out.println("Px (Cb) ["+i+"] : "+ecriture);
	    }
	    ////System.out.println();
	    ////System.out.println();
	    /*********************************************************/
	    /*********************************************************/
	    
	    
	    
	    
	    
	    
	    
	    
	    // FERMER LES FLUX
	    
	    ////System.out.println();
	    System.out.println("Taille fic binaire :"+ecriture.size());
	    ecriture.close();
	  }

	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
//	
//	
//	public static void ecrire(int largeurImage,
//							  int hauteurImage,
//							  List<Rectangle> rectanglesLuminance,
//							  List<Integer> valeursLuminance,
//							  List<Rectangle> rectanglesCrominanceRouge,
//							  List<Integer> valeursCrominanceRouge,
//							  List<Rectangle> rectanglesCrominanceBleu,
//							  List<Integer> valeursCrominanceBleu,
//							  List<Integer> valeursRestantesLuminance,
//							  List<Integer> valeursRestantesCRouge,
//							  List<Integer> valeursRestantesCBleu) {
//		// ameliorer,
//		// pour mettre les valeurs qui restent dans le fichier binaire
//		/**try {
//			ecrire(largeurImage, hauteurImage, rectanglesLuminance, valeursLuminance, rectanglesCrominanceRouge, valeursCrominanceRouge, rectanglesCrominanceBleu, valeursCrominanceBleu) ;
//		} catch (IOException e) {
//			e.printStackTrace();
//		}*/
//		
//		
//	
//		DataOutputStream ecriture;
//		
//		try {
//			
//		 ecriture = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("toto.grol")));
//	
//	    // Vector des rect pour Y
//	    Vector<Rectangle> vect_rect_Y = new Vector<Rectangle>();
//	    Vector<Integer> vect_vals_Y = new Vector<Integer>();
//	    Vector<Rectangle> vect_rect_Cr = new Vector<Rectangle>();
//	    Vector<Integer> vect_vals_Cr = new Vector<Integer>();
//	    Vector<Rectangle> vect_rect_Cb = new Vector<Rectangle>();
//	    Vector<Integer> vect_vals_Cb = new Vector<Integer>();
//	    
//	    /**------------------------------------------------------------------*/
//	    Vector<Integer> vect_vals_restantes_Y = new Vector<Integer>();
//	    Vector<Integer> vect_vals_restantes_Cr = new Vector<Integer>();
//		Vector<Integer> vect_vals_restantes_Cb = new Vector<Integer>();
//		/**------------------------------------------------------------------*/
//	    
//	    // JEU DE TEST POUR LA LUMINANCE (Y)
//	    
//	    //Rectangles pour Y
//	    vect_rect_Y.add(new Rectangle(0,0,50,10));
//	    vect_rect_Y.add(new Rectangle(50,0,14,10));
//	    vect_rect_Y.add(new Rectangle(0,10,30,50));
//	    vect_rect_Y.add(new Rectangle(0,60,15,4));
//	    vect_rect_Y.add(new Rectangle(15,60,15,4));
//	    vect_rect_Y.add(new Rectangle(30,10,34,54));
//	    
//	    //Val des rect pour Y	    
//	    vect_vals_Y.add(15);
//	    vect_vals_Y.add(251);
//	    vect_vals_Y.add(98);
//	    vect_vals_Y.add(53);
//	    vect_vals_Y.add(89);
//	    vect_vals_Y.add(28);
//	    
//	    //JEU DE TEST POUR LA CHROMINANCE DE ROUGE (Cr)
//	    
//	    //Rectangles pour Cr
//	    vect_rect_Cr.add(new Rectangle(0,0,64,28));
//	    vect_rect_Cr.add(new Rectangle(0,28,32,36));
//	    vect_rect_Cr.add(new Rectangle(32,32,32,12));
//	    vect_rect_Cr.add(new Rectangle(32,58,28,10));
//	    
//	    //Val des rect pour Cr	    
//	    vect_vals_Cr.add(8);
//	    vect_vals_Cr.add(56);
//	    vect_vals_Cr.add(250);
//	    vect_vals_Cr.add(167);
//	    
//	    //JEU DE TEST POUR LA CHROMINANCE DE BLEU (Cb)
//	    
//	    //Rectangles pour Cr
//	    vect_rect_Cb.add(new Rectangle(0,0,50,32));
//	    vect_rect_Cb.add(new Rectangle(50,0,10,50));
//	    vect_rect_Cb.add(new Rectangle(0,32,25,7));
//	    vect_rect_Cb.add(new Rectangle(0,46,25,7));
//	    
//	    //Val des rect pour Cr	    
//	    vect_vals_Cb.add(123);
//	    vect_vals_Cb.add(24);
//	    vect_vals_Cb.add(47);
//	    vect_vals_Cb.add(2);
//	    
//	    //JEU DE TEST POUR LES PX RESTANTS POUR LA LUMINANCE (Y)
//	    vect_vals_restantes_Y.add(3);
//	    vect_vals_restantes_Y.add(145);
//	    vect_vals_restantes_Y.add(250);
//	    vect_vals_restantes_Y.add(78);
//	    vect_vals_restantes_Y.add(254);
//	    vect_vals_restantes_Y.add(269);
//	    vect_vals_restantes_Y.add(57);
//	    vect_vals_restantes_Y.add(36);
//	    vect_vals_restantes_Y.add(12);
//	    vect_vals_restantes_Y.add(1);
//	    
//	    //JEU DE TEST POUR LES PX RESTANTS POUR LA CHROMINANCE DE ROUGE (Cr)
//	    vect_vals_restantes_Cr.add(30);
//	    vect_vals_restantes_Cr.add(14);
//	    vect_vals_restantes_Cr.add(25);
//	    vect_vals_restantes_Cr.add(7);
//	    vect_vals_restantes_Cr.add(251);
//	    vect_vals_restantes_Cr.add(26);
//	    vect_vals_restantes_Cr.add(7);
//	    vect_vals_restantes_Cr.add(123);
//	    vect_vals_restantes_Cr.add(2);
//	    vect_vals_restantes_Cr.add(18);
//	    
//	    //JEU DE TEST POUR LES PX RESTANTS POUR LA CHROMINANCE DE BLEU (Cb)
//	    vect_vals_restantes_Cb.add(130);
//	    vect_vals_restantes_Cb.add(114);
//	    vect_vals_restantes_Cb.add(125);
//	    vect_vals_restantes_Cb.add(17);
//	    vect_vals_restantes_Cb.add(56);
//	    vect_vals_restantes_Cb.add(126);
//	    vect_vals_restantes_Cb.add(78);
//	    vect_vals_restantes_Cb.add(23);
//	    vect_vals_restantes_Cb.add(12);
//	    vect_vals_restantes_Cb.add(8);
//
//	    
//	    
//	    
//	    //Extension
//	    ecriture.writeChars(".grol");
//	    ////System.out.println("Extension : "+".grol");
//	    ////System.out.println();
//	    
//	    //Hauteur img
//	    ecriture.writeShort(hauteurImage);
//	    ////System.out.println("Hauteur img : "+hauteurImage);
//	    ////System.out.println();
//	    
//	    //Largeur img
//	    ecriture.writeShort(largeurImage);
//	    ////System.out.println("Largeur img : "+largeurImage);
//	    ////System.out.println();
//	    
//	    ////System.out.println("TEST AVEC 6 rect pour Y et 4 pour Cr et Cb");
//	    ////System.out.println();
//	    
//	    /** LUMINANCE */
//	    
//	    //Nombre de rectangle pour la Luminance
//	    ecriture.writeShort(rectanglesLuminance.size());
//	    ////System.out.println("------ LUMINANCE (Y) ------");
//	    ////System.out.println();
//	    ////System.out.println("Nb rect pour Y :"+ecriture);
//	    ////System.out.println();
//	    
//	    ////System.out.println("Rectangles pour Y : ");
//	    ////System.out.println();
//	    
//	    for ( int i=0 ; i<rectanglesLuminance.size() ; i++ ) { 
//	    
//	    	//Valeur de la luminance
//	    	int valeur = vect_vals_Y.get(i);
//	    	ecriture.writeShort(valeur);
//	    	////System.out.println("Val Y ["+i+"] : "+ecriture);
//	    
//	    	//Rectangles
//	    	 for ( int j=i ; j==i ; j++ ) { 
//	    		 
//	    		 int x = (int) vect_rect_Y.get(j).getX();
//	    		 int y = (int) vect_rect_Y.get(j).getY();
//	    		 int largeur = (int) vect_rect_Y.get(j).getWidth();
//	    		 int hauteur = (int) vect_rect_Y.get(j).getHeight();
//	    		 
//	    		 ////System.out.print("Rect Y ["+j+"] =");
//	    		 ecriture.writeShort(x);
//	    		 ////System.out.print(" X = "+ecriture+" ");
//	    		 ecriture.writeShort(y);
//	    		 ////System.out.print(" Y = "+ecriture+" ");
//	    		 ecriture.writeShort(largeur);
//	    		 ////System.out.print(" larg = "+ecriture+" ");
//	    		 ecriture.writeShort(hauteur);
//	    		 ////System.out.print(" haut = "+ecriture+" ");
//	    		 ////System.out.println();
//	    		
//	    	 }
//	    	 ////System.out.println();
//	    }
//	    
//	    //Nombre de px restant pour Y
//	    ////System.out.println();
//	    ecriture.writeShort(vect_vals_restantes_Y.size());
//	    ////System.out.println("Nb de px restant pour Y :"+ecriture);
//	    ////System.out.println();
//	    ////System.out.println("Px restants : ");
//	    ////System.out.println();
//	    
//	    //Pix restant
//	    for ( int i=0 ; i<vect_vals_restantes_Y.size() ; i++ ) { 
//		    
//	    	//Valeur de la luminance
//	    	int valeur = vect_vals_restantes_Y.get(i);
//	    	ecriture.writeShort(valeur);
//	    	////System.out.println("Px (Y) ["+i+"] : "+ecriture);
//	    }
//	    ////System.out.println();
//	    ////System.out.println();
//	    
//	    /** CHROMINANCE R */
//	    
//	    //Nombre de rectangle pour la Chrominance de Rouge
//	    ecriture.writeShort(vect_rect_Cr.size());
//	    ////System.out.println("------ CHROMINANCE DE ROUGE (Cr) ------");
//	    ////System.out.println();
//	    ////System.out.println("Nb rect pour Cr :"+ecriture);
//	    ////System.out.println();
//	    
//	    ////System.out.println("Rectangles pour Cr : ");
//	    ////System.out.println();
//	    
//	    for ( int i=0 ; i<vect_vals_Cr.size() ; i++ ) { 
//		    
//	    	//Valeur de la luminance
//	    	int valeur = vect_vals_Cr.get(i);
//	    	ecriture.writeShort(valeur);
//	    	////System.out.println("Val Cr ["+i+"] : "+ecriture);
//	    
//	    	//Rectangles
//	    	for ( int j=i ; j==i ; j++ ) { 
//	    		 
//	    		 int x = (int) vect_rect_Cr.get(j).getX();
//	    		 int y = (int) vect_rect_Cr.get(j).getY();
//	    		 int largeur = (int) vect_rect_Cr.get(j).getWidth();
//	    		 int hauteur = (int) vect_rect_Cr.get(j).getHeight();
//	    		 
//	    		 ////System.out.print("Rect Cr ["+j+"] =");
//	    		 ecriture.writeShort(x);
//	    		 ////System.out.print(" X = "+ecriture+" ");
//	    		 ecriture.writeShort(y);
//	    		 ////System.out.print(" Y = "+ecriture+" ");
//	    		 ecriture.writeShort(largeur);
//	    		 ////System.out.print(" larg = "+ecriture+" ");
//	    		 ecriture.writeShort(hauteur);
//	    		 ////System.out.print(" haut = "+ecriture+" ");
//	    		 ////System.out.println();
//	    		
//	    	 }
//	    	 ////System.out.println();
//	    }
//	    
//	    //Nombre de px restant pour Cr
//	    ////System.out.println();
//	    ecriture.writeShort(vect_vals_restantes_Cr.size());
//	    ////System.out.println("Nb de px restant pour Cr :"+ecriture);
//	    ////System.out.println();
//	    ////System.out.println("Px restants : ");
//	    ////System.out.println();
//	    
//	    //Pix restant
//	    for ( int i=0 ; i<vect_vals_restantes_Cr.size() ; i++ ) { 
//		    
//	    	//Valeur de la luminance
//	    	int valeur = vect_vals_restantes_Cr.get(i);
//	    	ecriture.writeShort(valeur);
//	    	////System.out.println("Px (Cr) ["+i+"] : "+ecriture);
//	    }
//	    ////System.out.println();
//	    ////System.out.println();
//	    
//	   
//	    
//	    /** CHROMINANCE B */
//	    
//	    //Nombre de rectangle pour la Chrominance de Bleu
//	    ecriture.writeShort(vect_rect_Cb.size());
//	    ////System.out.println("------ CHROMINANCE DE BLEU (Cb) ------");
//	    ////System.out.println();
//	    ////System.out.println("Nb rect pour Cb :"+ecriture);
//	    ////System.out.println();
//	    
//	    ////System.out.println("Rectangles pour Cb : ");
//	    ////System.out.println();
//	    
//	    for ( int i=0 ; i<vect_vals_Cb.size() ; i++ ) { 
//		    
//	    	//Valeur de la luminance
//	    	int valeur = vect_vals_Cb.get(i);
//	    	ecriture.writeShort(valeur);
//	    	////System.out.println("Val Cb ["+i+"] : "+ecriture);
//	    
//	    	//Rectangles
//	    	for ( int j=i ; j==i ; j++ ) {
//	    		 
//	    		 int x = (int) vect_rect_Cb.get(j).getX();
//	    		 int y = (int) vect_rect_Cb.get(j).getY();
//	    		 int largeur = (int) vect_rect_Cb.get(j).getWidth();
//	    		 int hauteur = (int) vect_rect_Cb.get(j).getHeight();
//	    		 
//	    		 ////System.out.print("Rect Cb ["+j+"] =");
//	    		 ecriture.writeShort(x);
//	    		 ////System.out.print(" X = "+ecriture+" ");
//	    		 ecriture.writeShort(y);
//	    		 ////System.out.print(" Y = "+ecriture+" ");
//	    		 ecriture.writeShort(largeur);
//	    		 ////System.out.print(" larg = "+ecriture+" ");
//	    		 ecriture.writeShort(hauteur);
//	    		 ////System.out.print(" haut = "+ecriture+" ");
//	    		 ////System.out.println();
//	    		
//	    	 }
//	    	 ////System.out.println();
//	    }
//	    
//	    //Nombre de px restant pour Cb
//	    ////System.out.println();
//	    ecriture.writeShort(vect_vals_restantes_Cb.size());
//	    ////System.out.println("Nb de px restant pour Cb :"+ecriture);
//	    ////System.out.println();
//	    ////System.out.println("Px restants : ");
//	    ////System.out.println();
//	    
//	    //Pix restant
//	    for ( int i=0 ; i<vect_vals_restantes_Cb.size() ; i++ ) { 
//		    
//	    	//Valeur de la luminance
//	    	int valeur = vect_vals_restantes_Cb.get(i);
//	    	ecriture.writeShort(valeur);
//	    	////System.out.println("Px (Cb) ["+i+"] : "+ecriture);
//	    }
//	    ////System.out.println();
//	    ////System.out.println();
//	    
//	    
//	      
//	    ////System.out.println("Taille fic binaire :"+ecriture.size());
//	    ecriture.close();
//		}
//		catch (IOException e) {
//			e.printStackTrace();
//		}
//	  }
}



class Filtre extends FileFilter 
{
	public boolean accept(File f)
	{
		return (f.getName().endsWith(".grol") || f.isDirectory());
	}

    public String getDescription() 
	{
		return ("fichier Grollausaure (*.grol)");		
	}
}